# 8. docker之Harbor企业级镜像仓库

# Harbor概述

  1. Harbor是由VMWare公司开源的容器镜像仓库,事实上,Harbor是在docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用。
  2. 这些新的企业级特性包含:管理用户界面,基于角色的访问控制,AD/LDAP集成,审计日志等,足以满足企业的基本需求
  3. 官方地址:https://goharbor.io/

# Harbor组件

  1. harbor-adminserver:配置管理中心
  2. harbor-db:Mysql数据库
  3. harbor-jobservice:负责镜像复制
  4. harbor-log:记录操作日志
  5. harbor-ui:Web管理页面和API
  6. nginx:前端代理,负责前端页面和镜像上传/下载转发
  7. redis:会话保持
  8. registry:镜像存储

# Harbor安装有3种方式

  1. 在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小
  2. 离线安装:安装包包含部署的相关镜像,因此安装包比较大
  3. OVA安装程序:当用户具有vCenter环境时,使用此安装程序,在部署OVA后启动Harbo

# 安装docker-compose

安装harbor需要安装docker三剑客之一docker-compose

# 第一种方式安装

官方的安装方式:线上安装

curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version

##如果网络不好,推荐第二种安装

# 第二种办法安装

离线安装,事先下载好

cp -a docker-compose-Linux-x86_64 /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
docker-compose --version

# Habor部署

这边部署是采用离线安装,安装包事先下载好的

Harbor版本:harbor-offline-installer-v1.10.2.tgz

# 解压harbor压缩包

tar -zxf harbor-offline-installer-v1.10.2.tgz 
cd harbor

# 在harbor里面有几个比较重要的文件

  1. prepare:部署前的准备工作脚本
  2. install.sh:安装脚本
  3. harbor.cfg:harbor的主配置文件
  4. docker-compose.yml:docker-compose的配置文件,因为harbor需要安装docker-compose,我们在上面已经先安装过了

# 修改harbor.cfg配置文件

vim harbor.cfg

hostname = 192.168.31.180  ##修改这行为IP地址或域名
harbor_admin_password: Harbor12345  ##默认的登录密码,不用修改,搭建完之后web界面可修改管理员密码,用户名:admin

# 需要注释的行
#https:
  # https port for harbor, default is 443
  #port: 443
  # The path of cert and key files for nginx
  #certificate: /your/certificate/path
  #private_key: /your/private/key/path
# 为什么要注释,因为harbor新版本默认开启https,那么需要相关https证书,如果准备开启https的话,就可以把证书放在相对目录中,那么就不需要注释

# 安装harbor

./prepare  ## 校验环境需求
./install.sh  ## 安装

# 测试harbor是否成功

docker-compose ps

      Name                     Command                       State                     Ports          
------------------------------------------------------------------------------------------------------
harbor-core         /harbor/harbor_core              Up (health: starting)                            
harbor-db           /docker-entrypoint.sh            Up (health: starting)   5432/tcp                 
harbor-jobservice   /harbor/harbor_jobservice  ...   Up (health: starting)                            
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (health: starting)   127.0.0.1:1514->10514/tcp
harbor-portal       nginx -g daemon off;             Up (health: starting)   8080/tcp                 
nginx               nginx -g daemon off;             Up (health: starting)   0.0.0.0:80->8080/tcp     
redis               redis-server /etc/redis.conf     Up (health: starting)   6379/tcp                 
registry            /home/harbor/entrypoint.sh       Up (health: starting)   5000/tcp                 
registryctl         /home/harbor/start.sh            Up (health: starting)

# 进入harbar的web界面

本地IP就可以直接进入,默认是80端口

默认账号:admin

默认密码:Harbor12345

# harbor的简单实例

# 创建用户

用户管理-->创建用户

JkHBff.png

# 创建项目

项目-->新建项目

JkH7X4.png

# 给用户授权新建的项目

项目-->qqkj-->成员-->+用户

JkblHs.png

# 配置http镜像仓库信任

因为docker默认只支持https,所以我们要让docker支持指定链接的http

# 修改daemon.json文件配置

vim /etc/docker/daemon.json 

{"registry-mirrors": ["http://f1361db2.m.daocloud.io"],
"insecure-registries":["192.168.0.72"]
}{"insecure-registries":["192.168.0.72"]}

## 第一条,是因为我事先有配置了docker的加速器
## 博主在这里也出了问题,不过把加速器配置删除后,就可以正常使用了

# 重启docker

systemctl restart docker

# 启动harbor的组件

启动harbor仓库,一定要到harbor安装目录中执行命令

docker-compose up -d

# 要上传的镜像打标签

如果不打标签,会默认上传到docker的公共镜像仓库中

docker image tag nginx:v1 192.168.0.72/msg/nginx:v1

# 登录认证harbor仓库

帐号密码是harbor仓库新创建的账号

docker login 192.168.0.72

# 上传镜像到harbor仓库中

要先登录才能上传

docker image push 192.168.0.72/msg/nginx:v1

# 从harbor仓库拉取镜像

要先登录才能下载

docker image pull 192.168.0.72/msg/nginx:v1